#pragma once
#include <vector>
using namespace std;

struct ID3D11ShaderResourceView;
class ShaderContainer;
class TextureCube;
class Texture2D;
struct IGraphicsResource;

#define NUM_TEXTURES 5


struct Material
{
	union 
	{
		IGraphicsResource* e[NUM_TEXTURES];

		struct
		{
			Texture2D* diffuseMap;
			Texture2D* normalMap;
			Texture2D* specularMap;
			Texture2D* glossMap;
			Texture2D* emissiveMap;
		};

		struct
		{
			TextureCube* cube;
		};
	} textures;


	ShaderContainer* shaderContainer = nullptr;

	Material(void);
	~Material(void);

	static const int numTextures;
};